package com.can.Utils;


import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import org.springframework.stereotype.Component;

import javax.crypto.SecretKey;
import java.util.Date;

@Component
public class JwtUtil {

    // 密钥，用于签名 JWT
//    private final SecretKey SECRET_KEY = Keys.secretKeyFor(SignatureAlgorithm.HS256);
    private static final String SECRET_STRING = "maohoucamaohoucamaohoucamaohouca";
    private static final SecretKey SECRET_KEY = Keys.hmacShaKeyFor(SECRET_STRING.getBytes());
    // 生成 JWT 令牌
    public String generateToken(int userId, int power,String username) {
        // 设置 JWT 的过期时间（10 分钟后过期）
        Date expiration = new Date(System.currentTimeMillis() + 20 * 60 * 1000);

        return Jwts.builder()
                .setSubject(String.valueOf(userId)) // 设置主题（通常是用户名或用户ID）
                .claim("power",power)              //权限
                .claim("username",username)        //名字
                .setIssuedAt(new Date()) // 设置签发时间
                .setExpiration(expiration) // 设置过期时间
                .signWith(SECRET_KEY) // 使用密钥签名
                .compact();
    }

    // 解析 JWT 令牌
    public Claims parseToken(String token) {
        return Jwts.parserBuilder()
                .setSigningKey(SECRET_KEY)
                .build()
                .parseClaimsJws(token)
                .getBody();
    }
    public SecretKey outmiyao(){
        return SECRET_KEY;
    }
}